/*
 * @Author: 脉迈
 * @Date: 2022-01-17 16:44:56
 * @LastEditors: 脉迈
 * @LastEditTime: 2022-01-26 16:47:55
 */
import configUrl from "../config/index";
import axios from "axios";
import { getLocal } from "./helper";
import qs from "qs";
import { connected } from "process";
axios.defaults.timeout = 100000;
axios.defaults.baseURL = configUrl.RequestBaseUrl;

/**
 * http request 拦截器
 */
// axios.interceptors.request.use(
//   (config) => {
//     config.data = JSON.stringify(config.data);
//     config.headers = {
//       "Content-Type": "application/json" :  "application/x-www-form-urlencoded",
//       token: getLocal("ACCESS_TOKEN"),
//     };
//     return config;
//   },
//   (error) => {
//     return Promise.reject(error);
//   }
// );

/**
 * http response 拦截器
 */
// axios.interceptors.response.use(
//   (response) => {
//     if (response.data.errCode === 2) {
//       console.log("过期");
//     }
//     return response;
//   },
//   (error) => {
//     console.log("请求出错：", error);
//   }
// );

/**
 * 封装get方法
 * @param url  请求url
 * @param params  请求参数
 * @returns {Promise}
 */
// export function get(url: string, params = {}) {
//   return new Promise((resolve, reject) => {
//     axios
//       .get(url, {
//         params: params,
//       })
//       .then((response) => {
//         resolve(response.data);
//       })
//       .catch((error) => {
//         reject(error);
//       });
//   });
// }

/**
 * 封装post请求
 * @param url
 * @param data
 * @returns {Promise}
 */

// export function post(url: string, data: any) {
//   return new Promise((resolve, reject) => {
//     axios.post(url, data).then(
//       (response) => {
//         //关闭进度条
//         resolve(response.data);
//       },
//       (err) => {
//         reject(err);
//       }
//     );
//   });
// }

//统一接口处理，返回数据
interface config extends RequestInit {
  data?: object;
  formData?: FormData;
  token?: string | null;
}
// eslint-disable-next-line import/no-anonymous-default-export
export const http = async (
  endpoint: string,
  { data, formData, token, headers, ...customConfig }: config = {}
) => {
  const config = {
    method: "GET",
    headers: {
      token: getLocal("ACCESS_TOKEN") ? getLocal("ACCESS_TOKEN") : "",
      "Content-Type": data
        ? "application/json"
        : "application/x-www-form-urlencoded",
    },
    ...customConfig,
  };
  if (config.method.toUpperCase() === "GET") {
    if (data) {
      endpoint += `?${qs.stringify(data)}`;
    }
  } else {
    config.body = formData ? formData : JSON.stringify(data || {});
  }
  return window
    .fetch(`${configUrl.RequestBaseUrl}/${endpoint}`, config)
    .then(async (response) => {
      const data = await response.json();
      // 如果返回值中有token
      // if (data.token) {
      //   // handleTokenResponse({ data: { token: data.token } });
      // }
      // if (data.code === 200) {
      //   return data;
      // } else {
      //   // token 过期
      //   // if (data.status === 9001) {
      //   //   logout();
      //   //   window.location.reload();
      //   // } else {
      //   //   message.error(data.msg);
      //   // }
      //   return Promise.reject(data);
      if (data.code === 200) {
        return data;
      } else {
        return Promise.reject(data);
      }
    });

  // return new Promise((resolve, reject) => {
  //   switch (fecth) {
  //     case "get":

  //       get(url, param)
  //         .then(function (response) {
  //           resolve(response);
  //         })
  //         .catch(function (error) {

  //           reject(error);
  //         });
  //       break;
  //     case "post":
  //       post(url, param)
  //         .then(function (response) {
  //           resolve(response);
  //         })
  //         .catch(function (error) {

  //           reject(error);
  //         });
  //       break;
  //     case "form":

  //     default:
  //       break;
  //   }
  // });
};
